hello
I'm learning how to use operators:
this code compiles and works fine.
Code:
struct Item {
	int data;
	
	Item  (const int value = 0) { data = value; }

	Item operator+ (const Item &item) {
		Item result (data + item.data);
		return result;
	}
	Item operator* (const Item &item) {
		Item result (data * item.data);
		return result;
	}
};
But if I want to make data private...
Code:
class Item {
private:
	int data;
public:
	Item  (const int value = 0) { data = value; }
	int & Data () { return data; }

	Item operator+ (const Item &item) {
		Item result (data + item.Data ());
		return result;
	}
	Item operator* (const Item &item) {
		Item result (data * item.Data ());
		return result;
	}
};

int main () {
	Item a (3);
	Item b (4);
	Item c;
	c = a + b * a;

	return 0;
}
I get:
error: passing ‘const Item’ as ‘this’ argument of ‘int& Item::Data()’ discards qualifiers

what does it mean?
thanks